package com.tps.eric.utils;

import org.geotools.geojson.geom.GeometryJSON;
import org.locationtech.jts.geom.Geometry;
import org.locationtech.jts.io.WKTReader;

public class GeometryUtils {

    public static Geometry jsonToGeometry(String geojson){
        GeometryJSON geometryJSON = new GeometryJSON();
        Geometry geometry = null;
        try {
            geometry = geometryJSON.read(geojson);
        }catch (Exception e){
            e.printStackTrace();
        }
        return geometry;
    }

    public static String jtsToJson(Geometry geometry){
        GeometryJSON geometryJSON = new GeometryJSON(20);
        return geometryJSON.toString(geometry);
    }

    /**
     * 将Well-Known Text（WKT）格式的字符串转换为GeoJSON格式的几何对象
     * WKT是一种描述简单几何对象的文本格式，而GeoJSON是一种地理空间数据交换格式
     * 通过这个方法，可以将WKT表示的几何形状转换为GeoJSON格式，便于在Web地图上使用
     *
     * @param wkt_string 一个符合WKT格式的字符串，描述了需要转换的几何对象
     * @return 转换后的GeoJSON格式的几何对象，如果输入的WKT字符串格式有误，返回null
     */
    public static Geometry wktToGeojson(String wkt_string){
        // 创建一个WKTReader对象，用于读取WKT格式的字符串并转换为几何对象
        WKTReader wktReader = new WKTReader();
        // 初始化几何对象为null，待读取WKT字符串后赋值
        Geometry geometry = null;
        try {
            // 尝试读取WKT字符串并转换为几何对象
            geometry = wktReader.read(wkt_string);
        } catch (Exception e) {
            // 如果转换过程中出现异常，输出异常信息并返回null
            e.printStackTrace();
        }
        // 返回转换后的几何对象
        return geometry;
    }

    public static String getGeojsonFromWKT(String wkt_string){
        WKTReader wktReader = new WKTReader();
        try {
            Geometry geometry = wktReader.read(wkt_string);
            GeometryJSON geometryJSON = new GeometryJSON(20);
            return geometryJSON.toString(geometry);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
}
